package csm.marc;

/**
 * MARC의 SubField 데이터를 관리하는 클래스입니다.
 * 
 * @author seungmun
 * @since 2006.1.18.
 * 
 */
public class SubField
{
	private char code;
	private String data;

	/**
	 * 생성자
	 * 
	 * @param code
	 *            subfield code
	 * @param data
	 *            subfield data
	 */
	public SubField(char code, String data)
	{
		setCode(code);
		setData(data);
	}

	/**
	 * 서브필드 기호를 가져옵니다.
	 * @return Returns the code.
	 */
	public char getCode()
	{
		return code;
	}

	/**
	 * 서브필드 기호를 설정합니다.
	 * @param code
	 *            The code to set.
	 */
	public void setCode(char code)
	{
		this.code = code;
	}

	/**
	 * 서브필드의 내용을 가져옵니다.
	 * @return Returns the data.
	 */
	public String getData()
	{
		return data.trim();
	}

	/**
	 * 서브필드의 내용을 설정합니다.<br>
	 * 태그구분자({@link Delimiter}.TAG)가 표함되어 있다면 제외됩니다.
	 * @param data
	 *            The data to set.
	 */
	public void setData(String data)
	{
		if (data.length() > 0 && data.charAt(data.length() - 1) == Delimiter.TAG)
			this.data = data.substring(0, data.length() - 1);
		else
			this.data = data;
	}
}
